Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Kernel-based Virtual Machine</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Kernel-based_Virtual_Machine"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Kernel-based_Virtual_Machine rootpage-Kernel-based_Virtual_Machine skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span lang="en">Kernel-based Virtual Machine</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p class="mw-empty-elt">
</p>

<div class="infobox_v3 infobox infobox--frwiki noarchive" style="width:260px">
<div class="entete icon informatique" style="color: #000000;"><style data-mw-deduplicate="TemplateStyles:r228712691">
/* start https://fr.wikipedia.org/ */


.mw-parser-output .entete.informatique{background-image:url("./_mw_/Picto.nfo.png")}


/* end https://fr.wikipedia.org/ */
</style>
<div>Kernel-based Virtual Machine</div>
</div>
<div class="images">
</div>
<div class="hr" style="height:2px;"></div>
<div class="images">
</div>
<table><caption style="color:#000000;">Informations</caption>



<tbody><tr>
<th scope="row"><a href="D%C3%A9veloppeur" title="Développeur">Développé par</a></th>
<td>
Open Virtualization Alliance (OVA)</td>
</tr>





<tr>
<th scope="row"> <a href="Version_d'un_logiciel" title="Version d'un logiciel">Dernière version</a>
</th>
<td>
17 (<time>2019</time>)</td>
</tr>



<tr>
<th scope="row"><a href="D%C3%A9p%C3%B4t_(informatique)" title="Dépôt (informatique)">Dépôt</a></th>
<td>
<span class="wd_p1324"><a rel="nofollow" class="external text" href="https://git.kernel.org/pub/scm/virt/kvm/kvm.git">git.kernel.org/pub/scm/virt/kvm/kvm.git</a></span></td>
</tr>





<tr>
<th scope="row"> <a href="Langage_de_programmation" title="Langage de programmation">Écrit en</a>
</th>
<td>
<a href="C_(langage)" title="C (langage)">C</a></td>
</tr>






<tr>
<th scope="row"><a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">Système d'exploitation</a></th>
<td>
<span class="wd_p306"><a href="Linux" title="Linux">Linux</a></span></td>
</tr>











<tr>
<th scope="row"> Type
</th>
<td>
<a href="Hyperviseur" title="Hyperviseur">Hyperviseur</a></td>
</tr>



<tr>
<th scope="row"><a href="Licence_de_logiciel" title="Licence de logiciel">Licence</a></th>
<td>
<a href="GNU_General_Public_License" class="mw-redirect" title="GNU General Public License">GNU General Public License</a> et <a href="GNU_Lesser_General_Public_License" class="mw-redirect" title="GNU Lesser General Public License">GNU Lesser General Public License</a></td>
</tr>



<tr>
<th scope="row"><a href="Site_web" title="Site web">Site web</a></th>
<td>
<a rel="nofollow" class="external free" href="http://www.linux-kvm.org">http://www.linux-kvm.org</a></td>
</tr>

</tbody></table>
<p class="mw-empty-elt">

</p>
</div>
<p><b>KVM</b> (<b><span class="lang-en" lang="en">Kernel-based Virtual Machine</span></b>) est un <a href="Hyperviseur" title="Hyperviseur">hyperviseur</a> <a href="Logiciel_libre" title="Logiciel libre">libre</a> de type I (<a href="Bare_metal" title="Bare metal">bare metal</a>) pour <a href="Linux" title="Linux">Linux</a>. KVM est intégré dans le <a href="Noyau_Linux" title="Noyau Linux">noyau Linux</a> depuis la <a href="Version_d'un_logiciel" title="Version d'un logiciel">version</a> 2.6.20<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.
</p><p>Il fonctionne originellement sur les processeurs à <a href="Architecture_mat%C3%A9rielle" title="Architecture matérielle">architectures</a> <a href="X86" title="X86">x86</a> disposant des instructions de Virtualisation <a href="Intel_VT" title="Intel VT">Intel VT</a> ou <a href="Advanced_Micro_Devices#Pacifica/AMD-V" title="Advanced Micro Devices"> AMD-V </a><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>. Depuis, KVM a été porté pour les architectures <a href="Power_PC" class="mw-redirect" title="Power PC">Power PC</a><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>, <a href="IA-64" title="IA-64">IA-64</a> ainsi que <a href="Architecture_ARM" title="Architecture ARM">ARM</a> depuis le noyau <a href="Noyau_Linux" title="Noyau Linux">Linux</a> 3.9.
</p>

<div class="mw-heading mw-heading2"><h2 id="Histoire">Histoire</h2></div>
<p>Le développement de KVM a commencé au sein de la société Qumranet par Avi Kivity. <a href="Red_Hat" title="Red Hat">Red Hat</a> a racheté Qumranet le <time class="nowrap" datetime="2008-09-04" data-sort-value="2008-09-04">4 septembre 2008</time><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>. Depuis KVM est co-maintenu par le développeur <a href="Marcelo_Tosatti" title="Marcelo Tosatti">Marcelo Tosatti</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Fonctionnement">Fonctionnement</h2></div>
<p>KVM a été conçu à partir d’un <a href="Fork_(d%C3%A9veloppement_logiciel)" title="Fork (développement logiciel)">embranchement</a> de <a href="QEMU" title="QEMU">QEMU</a> puis celui-ci a à son tour intégré le <a href="Code_source" title="Code source">code source</a> de l’autre de sorte que les deux sont interdépendants<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>. La principale modification apportée est la prise en charge du module <i>kvm</i>. Lorsqu'on parle de KVM, on parle généralement de l'ensemble&nbsp;: la version modifiée de QEMU et le module <i>kvm</i>.<sup class="need_ref_tag" style="padding-left:2px;"><span title="Ce passage nécessite une référence ; voir l'aide.">[réf.&nbsp;nécessaire]</span></sup>
</p><p>QEMU est capable, grâce à son module KQEMU (<i>K</i> pour <i><span class="lang-en" lang="en">Kernel</span></i>, «&nbsp;<a href="Noyau_de_syst%C3%A8me_d'exploitation" title="Noyau de système d'exploitation">noyau</a>&nbsp;» en anglais), d'exécuter du code machine directement sur le <a href="Processeur" title="Processeur">processeur</a> hôte<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> afin d'accélérer l'émulation. Cette technologie, bien qu'apportant un gain de performance important, n'est pas parfaite. Des mécanismes de protection pour intercepter et <a href="%C3%89mulation" title="Émulation">émuler</a> les évènements privilégiés doivent être mis en place. Or le code noyau du système invité fonctionne normalement entièrement en mode privilégié. Étant émulé de manière classique, il est donc fortement pénalisé alors qu'il s'agit de l'élément crucial du système.
</p><p>Les processeurs de la famille x86 disposent de 4 niveaux de privilège d'exécution, appelés <a href="Anneau_de_protection" title="Anneau de protection">anneaux de protection</a>. En plus de ces anneaux, les processeurs récents intègrent un nouveau mécanisme d'isolation qui permet à un système invité d'être exécuté directement sur le processeur quels que soient les anneaux de protection qu'il requiert pour fonctionner, tout en assurant la protection contre la lecture et l'écriture dans la mémoire n'appartenant pas à la <a href="Machine_virtuelle" title="Machine virtuelle">machine virtuelle</a>. Cela est principalement possible grâce à une <a href="Unit%C3%A9_de_gestion_m%C3%A9moire" class="mw-redirect" title="Unité de gestion mémoire">MMU</a> dédiée à chaque machine virtuelle sur le processeur et à une redirection des <a href="Interruption_(informatique)" title="Interruption (informatique)">interruptions matérielles</a> vers l'hyperviseur de machines virtuelles (KVM en l'occurrence) afin d'émuler le matériel dont a besoin le système invité.
</p><p>Les technologies mises en place par les deux principaux <a href="Fonderie_(%C3%A9lectronique)" title="Fonderie (électronique)">fondeurs</a> que sont <a href="Advanced_Micro_Devices" title="Advanced Micro Devices">AMD</a> et <a href="Intel" title="Intel">Intel</a> étant différentes, le module kvm se décline en deux sous-modules&nbsp;: kvm-intel et kvm-amd&nbsp;; le module kvm n'est finalement présent que pour fournir à l'émulateur une <a href="Couche_d'abstraction_mat%C3%A9rielle" title="Couche d'abstraction matérielle">abstraction supplémentaire</a>.
</p><p>Dans les versions récentes de kvm (au minimum la version 60<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>) il est possible d'utiliser un mécanisme similaire à la <a href="Paravirtualisation" title="Paravirtualisation">paravirtualisation</a> en utilisant <a href="Virtio" title="Virtio">virtio</a>. Les <a href="Pilote_informatique" title="Pilote informatique">pilotes</a> <a href="Virtio" title="Virtio">virtio</a> sont inclus dans le noyau <a href="Linux" title="Linux">Linux</a> de version 2.6.25 au minimum. Il existe aussi des <a href="Pilote_informatique" title="Pilote informatique">pilotes</a> <a href="Virtio" title="Virtio">virtio</a> pour <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>. Ce mécanisme permet une vitesse d'exécution accrue car il n'est plus nécessaire d'émuler des périphériques matériels. Cependant ce système sort du cadre de la virtualisation au sens strict car il faut que les <a href="Pilote_informatique" title="Pilote informatique">pilotes</a> soient informés qu'ils sont exécutés dans un environnement virtualisé<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><a href="Libvirt" title="Libvirt">libvirt</a></li>
<li><a href="LXC" title="LXC">LXC</a></li>
<li><a href="Proxmox_VE" class="mw-redirect" title="Proxmox VE">Proxmox VE</a></li>
<li><a href="QEMU" title="QEMU">QEMU</a></li>
<li><a href="OpenStack" title="OpenStack">OpenStack</a></li>
<li><a href="OVirt" title="OVirt">oVirt</a></li>
<li><a href="Xen" title="Xen">Xen</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><cite class="ouvrage" id="site_officiel" style="font-style: normal;"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://www.linux-kvm.org/">Site officiel</a></cite></li>
<li><abbr class="abbr indicateur-langue" title="Langue : français">(fr)</abbr> <a rel="nofollow" class="external text" href="http://www.01net.com/actualites/kvm-une-machine-virtuelle-dans-linux-338904.html">«&nbsp;KVM, une machine virtuelle dans Linux&nbsp;»</a>, un article sur 01net</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://kernelnewbies.org/Linux_2_6_20#head-bca4fe7ffe454321118a470387c2be543ee51754"><i>Linux 2 6 20</i></a> sur <i><span class="lang-en" lang="en">KernelNewbies</span></i>.</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.linux-kvm.org/page/Status">État du projet</a> sur le wiki de KVM.</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://news.gmane.org/gmane.comp.emulators.kvm.devel/2595">Gmane Loom</a>.</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text"><span class="ouvrage">«&nbsp;<a rel="nofollow" class="external text" href="http://www.journaldunet.com/solutions/systemes-reseaux/red-hat-qumranet-0908.shtml"><cite style="font-style:normal;">Virtualisation&nbsp;&nbsp;: Red Hat rachète l'israélien Qumranet</cite></a>&nbsp;», sur <span class="italique">journaldunet.com</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2020-10-09" data-sort-value="2020-10-09">9 octobre 2020</time>)</small></span>.</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text">Voir <a rel="nofollow" class="external text" href="http://avikivity.blogspot.com/2008/12/kvm-userspace-merging-into-upstream.html">cette page</a> sur le <a href="Blog" title="Blog">blog</a> d'Avi Kivity.</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a> </span><span class="reference-text">Si l'architecture du système hôte et invité sont de type x86 32 ou 64 bits.</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a> </span><span class="reference-text">Voir <a rel="nofollow" class="external text" href="http://www.linux-kvm.org/page/Virtio">cette page sur le site de KVM</a>.</span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external autonumber" href="http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers">[1]</a>.</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external free" href="http://wiki.libvirt.org/page/Virtio">http://wiki.libvirt.org/page/Virtio</a>.</span>
</li>
</ol></div>
</div>
<div class="navbox-container" style="clear:both;">

</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de Linux</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail des logiciels libres</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2024-07-24" href="https://fr.wikipedia.org/wiki/?title=Kernel-based_Virtual_Machine&amp;oldid=217080066">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>